package com.wanwen.utils;

import java.util.ArrayList;
import java.util.List;

import com.wanwen.dto.ModuleDto;
import com.wanwen.dto.ModuleTree;

public class UITreeFactory {
   
	public static List<ModuleTree> moduleTreeList; //所有模块树集合
	/**
	 * 初始化树形结构
	 */
	public static void loadTree(List<ModuleDto> moduleDtoList){
		moduleTreeList=new ArrayList<ModuleTree>();
		if(moduleDtoList!=null && moduleDtoList.size()>0){
			for (ModuleDto moduleDto : moduleDtoList) {
				if(moduleDto.getParentId()==0){//找父菜单
					ModuleTree  mTree=new ModuleTree(
							moduleDto.getId(), 
							moduleDto.getTitle(), 
							moduleDto.getHref(),
							moduleDto.getIcon(),
							moduleDto.isChecked());
					mTree.setChildren(new ArrayList<ModuleTree>());
					createChildren(mTree,moduleDtoList);//为父节点添加子节点
					moduleTreeList.add(mTree);
				}
			}
		}
	}
	
	/**
	 * 为节点node增加子节点
	 * @param p
	 * @param arr
	 */
	private static void createChildren(ModuleTree node,List<ModuleDto> moduleDtoList){
		for(ModuleDto moduleDto : moduleDtoList){
				if(moduleDto.getParentId()==node.getId()){
					ModuleTree  mTree=new ModuleTree(
							moduleDto.getId(), 
							moduleDto.getTitle(), 
							moduleDto.getHref(),
							moduleDto.isChecked());
					mTree.setChildren(new ArrayList<ModuleTree>());
					node.getChildren().add(mTree);
					createChildren(mTree,moduleDtoList);//递归调用
				}
			}
		//如果父节点（包含在根据roleId获取的模块中）下的所有孩子节点都被选中则父节点被选中，否则不被选中
		/*
		 * List<ModuleTree> childList=node.getChildren(); if(childList!=null &&
		 * childList.size()>0){ for(ModuleTree mtree : childList){
		 * if(mtree.isChecked()==false){ node.setChecked(false); break; } } }
		 */
	}
	
}
